%pylab inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import * #3D-s ábrák alcsomagja
from ipywidgets import * #interaktivitáshoz szükséges függvények
# Az abra kimentesehez az alabbiakat a plt.show() ele kell tenni!!!
#savefig('fig_rainbow_p2_1ray.pdf'); # Abra kimentese
#savefig('fig_rainbow_p2_1ray.eps'); # Abra kimentese
# Abra es fontmeretek
xfig_meret= 6 # 12 nagy abrahoz
yfig_meret= 6 # 12 nagy abrahoz
xyticks_meret= 15 # 20 nagy abrahoz
xylabel_meret= 15 # 30 nagy abrahoz
legend_meret= 21 # 30 nagy abrahoz
def dispTB(X,Y,Z):
return(-cos(X)-cos(Y)-cos(Z))
$E_{HH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2-\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$ $E_{LH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2+\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$,
where $A = 4.27, B = 0.63, C= 4.93 $ for Silicon
See Eq. (20.2.9) on page 206 in Jenő Sólyom: Fundamentals of the Physics of Solids, Volume 2: Electronic Properties (A modern szilárdtes-tfizika alpajai II. Fémek, félvezetők, szupravezetők).
# Silicium savszerkezete, spin-palya kolcsonhatassal
# Solyom Jeno, II. kotet, 885. old., (20.2.9) egyenlet
def dispSi(kx,ky,kz,params):
A, B, C = params
k2 = kx*kx+ky*ky+kz*kz
k4 = k2*k2
tmp = sqrt(B*B*k4+C*C*(kx*kx*ky*ky+ky*ky*kz*kz+kz*kz*kx*kx))
eHH = - (A*k2-tmp) # heavy hole
eLH = - (A*k2+tmp) # light hole
return([eHH,eLH])
A = 4.27
B = 0.63
C= 4.93
params = [A,B,C]
dispSi(pi,0.27,0,params)
Npoints=100;
kmax=pi/10
kxlist = linspace(-kmax,kmax,Npoints)
heavy_hole = [];
light_hole = [];
for kx_ in kxlist:
heavy_hole.append(dispSi(kx_,0,0,params)[0])
light_hole.append(dispSi(kx_,0,0,params)[1])
plot(kxlist,heavy_hole,color='b')
plot(kxlist,light_hole,color='r')
cim = "Heavy (blue) and light (red) hole bands for Si, along $k_x$"
title(cim,fontsize=xylabel_meret)
xlim(-0.25,0.25)
ylim(-0.32,0)
grid();
savefig('Si_heavy_light_hole_kx.png'); # Abra kimentese
# creating sample of k points
kpoints = 500 # number of k points in the Brillouin zone
klim = 1.0
kran=linspace(-klim,klim,kpoints ) # Brilloin zone 2*pi x 2*pi square
X,Y=meshgrid(kran,kran)
kgrid=transpose(array([X.flatten(),Y.flatten()]))
dat = [];
for kv in kgrid:
dat.append(dispSi(kv[0],kv[1],0,params))
dat=array(dat)
# reading the eigenvalues from 'dat'
# az elso 2 beolvasasa a Z1, Z2 array-be:
Z1 = reshape(dat[:,0],(kpoints, kpoints)) # heavy hole
Z2 = reshape(dat[:,1],(kpoints, kpoints)) # light hole
#ncont = 8 # a contour-vonalak szama, pl. ncont = 11
e_szintek = [-2, -1, -0.5] # ezek a kontans energia ertekek
figsize(xfig_meret,yfig_meret)
subplot(1,1,1,aspect='equal')
plot((0, 1.2), (0, 0), 'k-')
plot((0, 0), (0, 1.2), 'k-')
annotate(r'$k_x$', xy=(1.,0.), xytext=(0.85,0.05),fontsize=21)
annotate(r'$k_y$', xy=(0.,1.), xytext=(0.05,0.87),fontsize=21)
cp1=contour(X, Y, Z1, levels=e_szintek, alpha=1, colors='blue', linestyles='-',linewidths=2)
clabel(cp1, inline=True, fontsize=10)
cp2=contour(X, Y, Z2, levels=e_szintek, alpha=1, colors='red', linestyles='--',linewidths=2)
clabel(cp2, inline=True, fontsize=10)
cim = "Heavy (blue) and light (red) hole bands for Si, $k_z =0$"
title(cim,fontsize=xylabel_meret)
xlim(-klim,klim)
ylim(-klim,klim)
grid();
#savefig('Si_heavy_light_hole.png'); # Abra kimentese